EAS Build中使用环境变量和密钥
Expo中的环境变量描述了如何使用**.env文件来设置可以在JavaScript代码中内联的环境变量。Expo CLI将在您的代码中适当前缀的变量(例如,process.env.EXPO_PUBLIC_VARNAME
)替换为开发机器上.env**文件中的相应环境变量值。
由于您的EAS Build作业在远程服务器上运行,这些**.env文件可能不可用。例如,如果它们列在.gitignore中或未提交到您的本地版本控制系统中,则.env文件将从上传的项目中排除。此外,您可能希望在JavaScript代码之外使用环境变量来自定义构建时的应用二进制文件,例如设置捆绑标识符或错误报告服务的私钥。因此,EAS Build允许您在eas.json**中设置每个构建配置文件的环境变量,以及不应提交到源代码控制的敏感值,通过EAS Secrets。
在eas.json中设置明文环境变量
用于应用程序代码
如果您在**.env文件中设置了本地开发变量,如环境变量指南中所述,您可以在eas.json**的构建配置文件中设置相同的变量。例如,当本地开发时,您可能会将API URL变量设置为本地后端服务器,测试时设置为测试服务器,生产构建时设置为生产服务器。
在这种情况下,您的**.env**文件可能如下所示:
EXPO_PUBLIC_API_URL=http://api.local
将所有适用的**.env文件添加到您的.gitignore**(和**.easignore**,如果您的项目有一个)文件中,以便它们不随EAS Build作业一起上传:
# 忽略所有 .env 文件
.env*
然后,您可以在eas.json的每个构建配置文件中设置相同的环境变量:
{
"build": {
"production": {
"env": {
"EXPO_PUBLIC_API_URL": "https://api.production.com"
}
},
"test": {
"env": {
"EXPO_PUBLIC_API_URL": "https://api.test.com"
}
}
}
}
任何对process.env.EXPO_PUBLIC_API_URL
的引用都将根据环境替换为适用的值。
EXPO_PUBLIC_
变量替换 在SDK 49及更高版本中可用。
用于您的Expo配置
您可以在动态配置中使用环境变量(app.config.js),以更改应用程序的构建方式。例如,您可能希望更改测试构建的应用程序图标或简称。
在构建配置文件中设置变量:
{
"build": {
"test": {
"env": {
"APP_ICON": "./assets/icon-test.png",
"APP_NAME": "My App (Test)"
}
}
}
}
然后在app.config.js中引用该变量,为本地开发提供回退:
module.exports = {
// 如果定义了变量,则使用它,否则使用回退
icon: process.env.APP_ICON || './assets/icon.png',
name: process.env.APP_NAME || 'My App',
};
所有在eas.json构建配置文件中的环境变量在评估app.config.js时都可用。仅在应用程序代码中使用的变量使用
EXPO_PUBLIC_
前缀是一个好习惯。